package config

import (
	"github.com/gin-contrib/cors"
	"github.com/gin-gonic/gin"
	"time"
)

// CorsConfig 返回一个配置好的 CORS 中间件处理器
func CorsConfig() gin.HandlerFunc {
	return cors.New(cors.Config{
		// 允许所有来源，你也可以指定特定的来源
		// 允许的域名
		AllowOrigins: []string{"*"},
		// 允许的方法
		AllowMethods: []string{"GET", "POST", "PUT", "PATCH", "DELETE", "HEAD"},
		// 允许的头
		AllowHeaders: []string{"Origin", "Content-Length", "Content-Type"},
		// 暴露的头
		ExposeHeaders: []string{"Content-Length"},
		// 允许凭证
		AllowCredentials: true,
		// 预检请求的缓存时间
		// 默认为12小时
		MaxAge: 12 * time.Hour,
		// 允许自定义的请求头
		AllowOriginFunc: func(origin string) bool {
			// 动态判断是否允许该origin
			return true // 或者实现更复杂的逻辑
		},
	})
}
